{
 "cells": [
  {
   "attachments": {
    "f69f4f5b-faa4-4165-825d-58ae3bdd1a40.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "3f6939c1-523e-42f0-b865-45a24dcbaa56",
   "metadata": {},
   "source": [
    "![image.png](attachment:f69f4f5b-faa4-4165-825d-58ae3bdd1a40.png)\n",
    "\n",
    "---\n",
    "\n",
    "# 实验一  线性回归\n",
    "## 一、 实验目的\n",
    "本实验课程是计算机、人工智能、软件工程等专业学生的一门专业课程，通过实验，帮助学生更好地掌握数据挖掘与机器学习相关概念、技术、原理、应用等；通过实验提高学生编写实验报告、总结实验结果的能力；使学生对机器学习模型、算法等有比较深入的认识。要掌握的知识点如下：\n",
    "1.\t掌握机器学习中涉及的相关概念、模型、算法；\n",
    "2.\t熟悉机器学习模型训练、验证、测试的流程；\n",
    "3.\t熟悉常用的数据预处理方法；\n",
    "4.\t掌握线性回归优化问题的表示、求解及编程。\n",
    "\n",
    "## 二、基本要求\n",
    "\n",
    "1.\t实验前，复习《数据挖掘与机器学习》课程中的有关内容。\n",
    "2.\t准备好实验数据，编程完成实验内容，收集实验结果。\n",
    "3.\t独立完成实验报告。\n",
    "\n",
    "\n",
    "## 三、实验软件\n",
    "推荐使用Python编程语言（允许使用numpy库，需实现详细实验步骤，不允许直接调用scikit-learn中关于回归、分类等高层API）。\n",
    "\n",
    "\n",
    "## 四、实验内容：\n",
    "基于California Housing Prices数据集，完成关于房价预测的线性回归模型训练、测试与评估。\n",
    "1. 准备数据集并认识数据\n",
    "\n",
    "    下载California Housing Prices数据集https://www.kaggle.com/camnugent/california-housing-prices\n",
    "    \n",
    "    了解数据集各个维度特征及预测值的含义\n",
    "\n",
    "2. 探索数据并预处理数据\n",
    "\t\n",
    "    观察数据集各个维度特征及预测值的数值类型与分布\n",
    "\t\n",
    "    预处理各维度特征（如将类别型维度ocean_proximity转换为one-hot形式的数值数据），参考：https://blog.csdn.net/SanyHo/article/details/105304292\n",
    "\t\n",
    "    划分70%的样本作为训练数据集，30%的样本作为测试数据集\n",
    "\n",
    "3. 求解模型参数\n",
    "\t\n",
    "    编程实现线性回归模型的闭合形式参数求解\n",
    "\t\n",
    "    编程实现线性回归模型的梯度下降参数优化\n",
    "\n",
    "4. 测试和评估模型\n",
    " \t\n",
    "    在测试数据集上计算所训练模型的R2指标\n",
    "\n",
    "## 五、学生实验报告要求\n",
    "**实验报告需要包含以下几个部分**\n",
    "\n",
    "（1）简要介绍线性回归闭合形式参数求解的原理\n",
    "\n",
    "（2）简要介绍线性回归梯度下降参数求解的原理\n",
    "\n",
    "（3）程序清单（包含详细求解步骤）\n",
    "\n",
    "（4）展示实验结果，比较两种求解方式的优劣\n",
    "\n",
    "（5）讨论实验结果，分析各个特征与目标预测值的正负相关性\n",
    "\n",
    "---\n",
    "\n",
    "- R2评价指标\n",
    "$$\n",
    "R^2=1-\\frac\n",
    "{\\sum_i(\\widehat{y_i}-y_i)^2}\n",
    "{\\sum_u(\\overline{y_i}-y)^2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49f30f78-2e85-4722-b97d-ae0850cecafb",
   "metadata": {},
   "source": [
    "### 线性回归闭合形式参数求解原理\n",
    "\n",
    "通过最小化代价函数来求解模型的参数向量 $\\theta$ 这个数学问题是有闭式解或解析解的，即可以通过数学公式求解\n",
    "\n",
    "$$\n",
    "\\theta = (X^T X)^{-1}X^Ty\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c75b957c-1389-47e6-a207-a88a923ea0db",
   "metadata": {},
   "source": [
    "### 线性回归梯度下降参数求解的原理\n",
    "\n",
    "从某一个 θ 的初始值开始，然后通过训练集逐渐重复更新，当遇到训练样本的预测值与 y(i) 的真实值非常接近的情况下，就会发现基本没必要再对参数进行修改了；与此相反的情况是，如果我们的预测值 hθ(x(i)) 与 y(i) 的真实值有很大的误差（比如距离特别远），那就需要对参数进行更大地调整。\n",
    "\n",
    "\n",
    "$\\theta_j := \\theta_j + \\alpha \\sum_{i=1}^{m}(y^{(i)}-h_\\theta(x^{(i)}))x_j^{(i)} \\quad(for\\ every\\ j)$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36ec0555-898f-4d65-b1b1-32e1548a43c9",
   "metadata": {},
   "source": [
    "### 正规方程求解与梯度下降求解的比较\n",
    "\n",
    "1. 梯度下降需要选择学习率$\\alpha$而正规方程不需要\n",
    "2. 梯度下降需要迭代多次，而正规方程只需要一次运算\n",
    "3. 当特质数量n大的适合也能很好的适用，而正规方程一旦特征数量大是运算会比较艰难，因为$(X^TX)^{-1}$的计算\n",
    "4. 梯度下降可以用在其他模型之上，而正规方程只适用于线性模型，无法适用于逻辑回归等等。。。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2a0cc27f-1745-4da4-9797-ef4c5548d1a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c1fbc923-143c-43c7-a57a-0c60db9c21cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 实现线性回归模型\n",
    "class LinearRegression(object):\n",
    "    def __init__(self):\n",
    "        self.w = 0  # 斜率\n",
    "        self.b = 0  # 截距\n",
    "        self.sqrLoss = 0  # 最小均方误差\n",
    "        self.trainSet = 0  # 训练集特征\n",
    "        self.label = 0  # 训练集标签\n",
    "        self.learning_rate = None  # 学习率\n",
    "        self.n_iters = None  # 实际迭代次数\n",
    "        self.lossList = []  # 梯度下降每轮迭代的误差列表\n",
    "\n",
    "    def train(self, X, y, method, learning_rate=0.1, n_iters=1000):\n",
    "        if X.ndim < 2:\n",
    "            raise ValueError(\"X must be 2D array-like!\")\n",
    "        self.trainSet = X\n",
    "        self.label = y\n",
    "        if method.lower() == \"formula\":\n",
    "            self.__train_formula()\n",
    "        elif method.lower() == \"matrix\":\n",
    "            self.__train_matrix()\n",
    "        elif method.lower() == \"gradient\":\n",
    "            self.__train_gradient(learning_rate, n_iters)\n",
    "        else:\n",
    "            raise ValueError(\"method value not found!\")\n",
    "        return\n",
    "\n",
    "    # 公式求解法(仅适用于一元线性回归)\n",
    "    def __train_formula(self):\n",
    "        # w = \\frac{\\sum^{m}_{i=1}y_i(x_i-(\\overline{x}))}\n",
    "        # {\\frac{1}{m}\\sum^m_{i=1}(y_i-wx_i)}\n",
    "        #\n",
    "        # b = \\frac{1}{m}\\sum^m_{i=1}(x_i)^2-n{\\overline{x}}^2\n",
    "\n",
    "        n_samples, n_features = self.trainSet.shape\n",
    "        # 将X扁平化处理 二维降为一维\n",
    "        X = self.trainSet.flatten()\n",
    "        # y是一维的 直接赋值\n",
    "        y = self.label\n",
    "        Xmean = np.mean(X)\n",
    "        ymean = np.mean(y)\n",
    "        # 求w\n",
    "        self.w = (np.dot(X, y) - n_samples * Xmean * ymean) / (np.power(X, 2).sum() - n_samples * Xmean ** 2)\n",
    "        # 求b\n",
    "        self.b = ymean - self.w * Xmean\n",
    "        # 求误差\n",
    "        self.sqrLoss = np.power((y - np.dot(X, self.w) - self.b), 2).sum()\n",
    "        return\n",
    "\n",
    "    # 矩阵求解法\n",
    "    def __train_matrix(self):\n",
    "        n_samples, n_features = self.trainSet.shape\n",
    "        X = self.trainSet\n",
    "        y = self.label\n",
    "        # 合并w和b，在X尾部添加一列全是1的特征\n",
    "        X2 = np.hstack((X, np.ones((n_samples, 1))))\n",
    "        # 求w和b\n",
    "        EX = np.linalg.inv(np.dot(X2.T, X2))\n",
    "        what = np.dot(np.dot(EX, X2.T), y)\n",
    "        self.w = what[:-1]\n",
    "        self.b = what[-1]\n",
    "        self.sqrLoss = np.power((y - np.dot(X2, what).flatten()), 2).sum()\n",
    "        return\n",
    "\n",
    "    # 梯度下降法\n",
    "    def __train_gradient(self, learning_rate, n_iters, minloss=1.0e-6):\n",
    "        n_samples, n_features = self.trainSet.shape\n",
    "        X = self.trainSet\n",
    "        y = self.label\n",
    "        # 初始化迭代次数为0，初始化w0，b0为1，初始化误差平方和以及迭代误差之差\n",
    "        n = 0\n",
    "        w = np.ones(n_features)\n",
    "        b = 1\n",
    "        sqrLoss0 = np.power((y - np.dot(X, w).flatten() - b), 2).sum()\n",
    "        self.lossList.append(sqrLoss0)\n",
    "        deltaLoss = np.inf\n",
    "        while (n < n_iters) and (sqrLoss0 > minloss) and (abs(deltaLoss) > minloss):\n",
    "            # 求w和b的梯度\n",
    "            ypredict = np.dot(X, w) + b\n",
    "            gradient_w = -1. * np.dot((y - ypredict), X) / n_samples\n",
    "            gradient_b = -1. * sum(y - ypredict) / n_samples\n",
    "            # 更新w和b\n",
    "            w = w - learning_rate * gradient_w\n",
    "            b = b - learning_rate * gradient_b\n",
    "            # 求更新后的误差和更新前后的误差之差\n",
    "            sqrLoss1 = np.power((y - np.dot(X, w).flatten() - b), 2).sum()\n",
    "            deltaLoss = sqrLoss0 - sqrLoss1\n",
    "            sqrLoss0 = sqrLoss1\n",
    "            self.lossList.append(sqrLoss0)\n",
    "            n += 1\n",
    "        self.w = w\n",
    "        self.b = b\n",
    "        self.sqrLoss = sqrLoss0\n",
    "        self.learning_rate = learning_rate\n",
    "        self.n_iters = n + 1\n",
    "        return\n",
    "    \n",
    "    # 测试数据集上计算所训练模型的R2指标\n",
    "    def R2_Score(self, X_test, y_test):\n",
    "        # 分子部分表示真实值与预测值的平方差之和\n",
    "        u = (((np.dot(X_test, self.w) + self.b).reshape(y_test.shape) - y_test) ** 2).sum()\n",
    "        # 分母部分表示真实值与均值的平方差之和\n",
    "        v = ((y_test - y_test.mean()) ** 2).sum()\n",
    "        return 1 - (u / v)\n",
    "    \n",
    "    # 预测\n",
    "    def pre(self, X):\n",
    "        return np.dot(X, self.w) +  self.b\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4b08c6bf-b35c-4bc9-9fba-8f989a14c5f8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "公式法求解：w: 2.0 b: 1.0\n",
      "矩阵求解：w: [2.] b: 1.0000000000000033\n",
      "梯度下降求解：w: [1.99778663] b: 1.0079909799287847\n"
     ]
    }
   ],
   "source": [
    "# 一元线性回归测试\n",
    "X = np.array([1,2,3,4,5]).reshape(-1,1)\n",
    "y = np.array([3,5,7,9,11])\n",
    "lr = LinearRegression()\n",
    "lr.train(X, y, 'formula')\n",
    "print(\"公式法求解：w: {0} b: {1}\".format(lr.w, lr.b))\n",
    "# lr.pre(np.array([1]).reshape(-1,1))\n",
    "\n",
    "lr.train(X, y, 'matrix')\n",
    "print(\"矩阵求解：w: {0} b: {1}\".format(lr.w, lr.b))\n",
    "\n",
    "lr.train(X, y, 'gradient', n_iters=1000, learning_rate=0.05)\n",
    "print(\"梯度下降求解：w: {0} b: {1}\".format(lr.w, lr.b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b6406f39-ee62-45de-b385-d8bd7164fa55",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 20640 entries, 14462 to 10870\n",
      "Data columns (total 10 columns):\n",
      " #   Column              Non-Null Count  Dtype  \n",
      "---  ------              --------------  -----  \n",
      " 0   longitude           20640 non-null  float64\n",
      " 1   latitude            20640 non-null  float64\n",
      " 2   housing_median_age  20640 non-null  float64\n",
      " 3   total_rooms         20640 non-null  float64\n",
      " 4   total_bedrooms      20433 non-null  float64\n",
      " 5   population          20640 non-null  float64\n",
      " 6   households          20640 non-null  float64\n",
      " 7   median_income       20640 non-null  float64\n",
      " 8   median_house_value  20640 non-null  float64\n",
      " 9   ocean_proximity     20640 non-null  object \n",
      "dtypes: float64(9), object(1)\n",
      "memory usage: 1.7+ MB\n"
     ]
    }
   ],
   "source": [
    "# 测试housing数据集\n",
    "data = pd.read_csv(\"housing.csv\" )\n",
    "data = data.sample(frac=1)\n",
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "bd9b3b87-be02-4cab-9156-037e97c89996",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>longitude</th>\n",
       "      <th>latitude</th>\n",
       "      <th>housing_median_age</th>\n",
       "      <th>total_rooms</th>\n",
       "      <th>total_bedrooms</th>\n",
       "      <th>population</th>\n",
       "      <th>households</th>\n",
       "      <th>median_income</th>\n",
       "      <th>median_house_value</th>\n",
       "      <th>ocean_proximity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>12319</th>\n",
       "      <td>-116.71</td>\n",
       "      <td>33.94</td>\n",
       "      <td>12.0</td>\n",
       "      <td>549.0</td>\n",
       "      <td>109.0</td>\n",
       "      <td>209.0</td>\n",
       "      <td>90.0</td>\n",
       "      <td>3.0208</td>\n",
       "      <td>66300.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2475</th>\n",
       "      <td>-119.97</td>\n",
       "      <td>36.44</td>\n",
       "      <td>18.0</td>\n",
       "      <td>1128.0</td>\n",
       "      <td>237.0</td>\n",
       "      <td>772.0</td>\n",
       "      <td>220.0</td>\n",
       "      <td>2.1771</td>\n",
       "      <td>39200.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2346</th>\n",
       "      <td>-119.69</td>\n",
       "      <td>36.81</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2892.0</td>\n",
       "      <td>496.0</td>\n",
       "      <td>1634.0</td>\n",
       "      <td>501.0</td>\n",
       "      <td>4.4934</td>\n",
       "      <td>88000.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11645</th>\n",
       "      <td>-118.04</td>\n",
       "      <td>33.81</td>\n",
       "      <td>27.0</td>\n",
       "      <td>2990.0</td>\n",
       "      <td>515.0</td>\n",
       "      <td>1849.0</td>\n",
       "      <td>497.0</td>\n",
       "      <td>5.6846</td>\n",
       "      <td>216100.0</td>\n",
       "      <td>&lt;1H OCEAN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14493</th>\n",
       "      <td>-117.19</td>\n",
       "      <td>32.86</td>\n",
       "      <td>19.0</td>\n",
       "      <td>3716.0</td>\n",
       "      <td>563.0</td>\n",
       "      <td>1788.0</td>\n",
       "      <td>587.0</td>\n",
       "      <td>5.2113</td>\n",
       "      <td>267400.0</td>\n",
       "      <td>NEAR OCEAN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13713</th>\n",
       "      <td>-117.17</td>\n",
       "      <td>34.12</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3867.0</td>\n",
       "      <td>573.0</td>\n",
       "      <td>1275.0</td>\n",
       "      <td>433.0</td>\n",
       "      <td>5.4138</td>\n",
       "      <td>164400.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19493</th>\n",
       "      <td>-121.00</td>\n",
       "      <td>37.67</td>\n",
       "      <td>27.0</td>\n",
       "      <td>2278.0</td>\n",
       "      <td>479.0</td>\n",
       "      <td>995.0</td>\n",
       "      <td>449.0</td>\n",
       "      <td>2.5148</td>\n",
       "      <td>110200.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12498</th>\n",
       "      <td>-121.46</td>\n",
       "      <td>38.56</td>\n",
       "      <td>52.0</td>\n",
       "      <td>1750.0</td>\n",
       "      <td>372.0</td>\n",
       "      <td>764.0</td>\n",
       "      <td>369.0</td>\n",
       "      <td>2.9191</td>\n",
       "      <td>111800.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3076</th>\n",
       "      <td>-119.23</td>\n",
       "      <td>35.74</td>\n",
       "      <td>16.0</td>\n",
       "      <td>2275.0</td>\n",
       "      <td>659.0</td>\n",
       "      <td>1914.0</td>\n",
       "      <td>614.0</td>\n",
       "      <td>2.0330</td>\n",
       "      <td>68400.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2064</th>\n",
       "      <td>-119.80</td>\n",
       "      <td>36.68</td>\n",
       "      <td>31.0</td>\n",
       "      <td>2214.0</td>\n",
       "      <td>432.0</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>416.0</td>\n",
       "      <td>2.1691</td>\n",
       "      <td>66700.0</td>\n",
       "      <td>INLAND</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \\\n",
       "12319    -116.71     33.94                12.0        549.0           109.0   \n",
       "2475     -119.97     36.44                18.0       1128.0           237.0   \n",
       "2346     -119.69     36.81                15.0       2892.0           496.0   \n",
       "11645    -118.04     33.81                27.0       2990.0           515.0   \n",
       "14493    -117.19     32.86                19.0       3716.0           563.0   \n",
       "13713    -117.17     34.12                 2.0       3867.0           573.0   \n",
       "19493    -121.00     37.67                27.0       2278.0           479.0   \n",
       "12498    -121.46     38.56                52.0       1750.0           372.0   \n",
       "3076     -119.23     35.74                16.0       2275.0           659.0   \n",
       "2064     -119.80     36.68                31.0       2214.0           432.0   \n",
       "\n",
       "       population  households  median_income  median_house_value  \\\n",
       "12319       209.0        90.0         3.0208             66300.0   \n",
       "2475        772.0       220.0         2.1771             39200.0   \n",
       "2346       1634.0       501.0         4.4934             88000.0   \n",
       "11645      1849.0       497.0         5.6846            216100.0   \n",
       "14493      1788.0       587.0         5.2113            267400.0   \n",
       "13713      1275.0       433.0         5.4138            164400.0   \n",
       "19493       995.0       449.0         2.5148            110200.0   \n",
       "12498       764.0       369.0         2.9191            111800.0   \n",
       "3076       1914.0       614.0         2.0330             68400.0   \n",
       "2064       1326.0       416.0         2.1691             66700.0   \n",
       "\n",
       "      ocean_proximity  \n",
       "12319          INLAND  \n",
       "2475           INLAND  \n",
       "2346           INLAND  \n",
       "11645       <1H OCEAN  \n",
       "14493      NEAR OCEAN  \n",
       "13713          INLAND  \n",
       "19493          INLAND  \n",
       "12498          INLAND  \n",
       "3076           INLAND  \n",
       "2064           INLAND  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除存在缺失值的行\n",
    "data.dropna(inplace=True)\n",
    "data.head(10)\n",
    "# 删除缺失行只少了一两百条数据，无伤大雅"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a4d381c7-9601-49ef-8ace-75f17a824184",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((20433, 9), (20433,))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 切分X，y\n",
    "y = data['median_house_value']\n",
    "x = data.drop('median_house_value', axis=1)\n",
    "x.shape, y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "96ad7d9f-9205-471d-a23d-67a83efe1f1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>longitude</th>\n",
       "      <th>latitude</th>\n",
       "      <th>housing_median_age</th>\n",
       "      <th>total_rooms</th>\n",
       "      <th>total_bedrooms</th>\n",
       "      <th>population</th>\n",
       "      <th>households</th>\n",
       "      <th>median_income</th>\n",
       "      <th>ocean_proximity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>12319</th>\n",
       "      <td>-116.71</td>\n",
       "      <td>33.94</td>\n",
       "      <td>12.0</td>\n",
       "      <td>549.0</td>\n",
       "      <td>109.0</td>\n",
       "      <td>209.0</td>\n",
       "      <td>90.0</td>\n",
       "      <td>3.0208</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2475</th>\n",
       "      <td>-119.97</td>\n",
       "      <td>36.44</td>\n",
       "      <td>18.0</td>\n",
       "      <td>1128.0</td>\n",
       "      <td>237.0</td>\n",
       "      <td>772.0</td>\n",
       "      <td>220.0</td>\n",
       "      <td>2.1771</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2346</th>\n",
       "      <td>-119.69</td>\n",
       "      <td>36.81</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2892.0</td>\n",
       "      <td>496.0</td>\n",
       "      <td>1634.0</td>\n",
       "      <td>501.0</td>\n",
       "      <td>4.4934</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11645</th>\n",
       "      <td>-118.04</td>\n",
       "      <td>33.81</td>\n",
       "      <td>27.0</td>\n",
       "      <td>2990.0</td>\n",
       "      <td>515.0</td>\n",
       "      <td>1849.0</td>\n",
       "      <td>497.0</td>\n",
       "      <td>5.6846</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14493</th>\n",
       "      <td>-117.19</td>\n",
       "      <td>32.86</td>\n",
       "      <td>19.0</td>\n",
       "      <td>3716.0</td>\n",
       "      <td>563.0</td>\n",
       "      <td>1788.0</td>\n",
       "      <td>587.0</td>\n",
       "      <td>5.2113</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13713</th>\n",
       "      <td>-117.17</td>\n",
       "      <td>34.12</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3867.0</td>\n",
       "      <td>573.0</td>\n",
       "      <td>1275.0</td>\n",
       "      <td>433.0</td>\n",
       "      <td>5.4138</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19493</th>\n",
       "      <td>-121.00</td>\n",
       "      <td>37.67</td>\n",
       "      <td>27.0</td>\n",
       "      <td>2278.0</td>\n",
       "      <td>479.0</td>\n",
       "      <td>995.0</td>\n",
       "      <td>449.0</td>\n",
       "      <td>2.5148</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12498</th>\n",
       "      <td>-121.46</td>\n",
       "      <td>38.56</td>\n",
       "      <td>52.0</td>\n",
       "      <td>1750.0</td>\n",
       "      <td>372.0</td>\n",
       "      <td>764.0</td>\n",
       "      <td>369.0</td>\n",
       "      <td>2.9191</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3076</th>\n",
       "      <td>-119.23</td>\n",
       "      <td>35.74</td>\n",
       "      <td>16.0</td>\n",
       "      <td>2275.0</td>\n",
       "      <td>659.0</td>\n",
       "      <td>1914.0</td>\n",
       "      <td>614.0</td>\n",
       "      <td>2.0330</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2064</th>\n",
       "      <td>-119.80</td>\n",
       "      <td>36.68</td>\n",
       "      <td>31.0</td>\n",
       "      <td>2214.0</td>\n",
       "      <td>432.0</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>416.0</td>\n",
       "      <td>2.1691</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \\\n",
       "12319    -116.71     33.94                12.0        549.0           109.0   \n",
       "2475     -119.97     36.44                18.0       1128.0           237.0   \n",
       "2346     -119.69     36.81                15.0       2892.0           496.0   \n",
       "11645    -118.04     33.81                27.0       2990.0           515.0   \n",
       "14493    -117.19     32.86                19.0       3716.0           563.0   \n",
       "13713    -117.17     34.12                 2.0       3867.0           573.0   \n",
       "19493    -121.00     37.67                27.0       2278.0           479.0   \n",
       "12498    -121.46     38.56                52.0       1750.0           372.0   \n",
       "3076     -119.23     35.74                16.0       2275.0           659.0   \n",
       "2064     -119.80     36.68                31.0       2214.0           432.0   \n",
       "\n",
       "       population  households  median_income  ocean_proximity  \n",
       "12319       209.0        90.0         3.0208                1  \n",
       "2475        772.0       220.0         2.1771                1  \n",
       "2346       1634.0       501.0         4.4934                1  \n",
       "11645      1849.0       497.0         5.6846                0  \n",
       "14493      1788.0       587.0         5.2113                2  \n",
       "13713      1275.0       433.0         5.4138                1  \n",
       "19493       995.0       449.0         2.5148                1  \n",
       "12498       764.0       369.0         2.9191                1  \n",
       "3076       1914.0       614.0         2.0330                1  \n",
       "2064       1326.0       416.0         2.1691                1  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把最后一列文字类型转为数字\n",
    "strs = x['ocean_proximity'].value_counts()\n",
    "value_map = dict((v, i) for i, v in enumerate(strs.index))\n",
    "# {'<1H OCEAN': 0, 'INLAND': 1, 'NEAR OCEAN': 2, 'NEAR BAY': 3, 'ISLAND': 4}\n",
    "x = x.replace({'ocean_proximity':value_map})\n",
    "x.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2a2d1ef1-6dc9-43ae-9ebf-7aa9783496d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将特征x标准化，方便收敛\n",
    "x = (x - x.mean(axis=0)) / x.std(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bf8a8133-a4af-46fe-b2cf-4c82b36b3220",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(((14303, 9), (6130, 9)), ((14303,), (6130,)))"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 划分训练集测试集 7 - 3\n",
    "trainNum = int(x.shape[0] * 0.7)\n",
    "x_train = np.array(x[-trainNum:])\n",
    "x_test = np.array(x[:-trainNum])\n",
    "y_train = np.array(y[-trainNum:])\n",
    "y_test = np.array(y[:-trainNum])\n",
    "(x_train.shape, x_test.shape), (y_train.shape, y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "240857a9-7a28-4272-a47b-20518c37766c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "矩阵求解：w: [-85367.22607692 -90142.93275644  14038.65639225 -17207.96187937\n",
      "  49080.96009939 -50066.06260411  22337.10768409  76251.09230245\n",
      "  -1684.93729388] b: 206311.57809515327\n",
      "R2: 0.6199234190819212\n"
     ]
    }
   ],
   "source": [
    "lr.train(x_train, y_train, \"matrix\")\n",
    "print(\"矩阵求解：w: {0} b: {1}\".format(lr.w, lr.b))\n",
    "score = lr.R2_Score(x_test, y_test)\n",
    "print(\"R2: {0}\".format(score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "40f47a9f-ca52-443c-9bd3-99d1bdc85b29",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "梯度下降法求解：w: [-81049.00479435 -86047.87897316  14366.2982927  -16811.67501366\n",
      "  40387.56727049 -51239.41242101  31797.81383627  76447.24316014\n",
      "  -1440.68848728] b: 206302.94298971145\n",
      "R2: 0.6192400882563365\n"
     ]
    }
   ],
   "source": [
    "lr.train(x_train, y_train, \"Gradient\", n_iters=1000, learning_rate=0.05)\n",
    "print(\"梯度下降法求解：w: {0} b: {1}\".format(lr.w, lr.b))\n",
    "score = lr.R2_Score(x_test, y_test)\n",
    "print(\"R2: {0}\".format(score))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b9e1b22-f11f-4053-a0a3-7b51f676f9bc",
   "metadata": {},
   "source": [
    "大概是因为数据集太脏了，没有做过多的数据预处理，训练效果并不明显"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f2f90d0-62fc-402c-b022-7a07603d6726",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "test",
   "language": "python",
   "name": "test"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
